#include <LPC214x.H>                       /* LPC21xx definitions */


#define TIMER_TICK_1_MS (59999) /* VPB at 60 MHz clock */
#define BUZZER	(0x1 << 25)
#define BUZZER_ON	IO1DIR 	|= BUZZER;	\
					IO1CLR	|= BUZZER

#define BUZZER_OFF	IO1DIR 	|= BUZZER;	\
					IO1SET	|= BUZZER

unsigned int ms_count;

void Timer_ISR(void) __irq
{
	ms_count++;

	if(ms_count == 1000)
	{
	   if(IO1PIN & BUZZER)
	{
	   		BUZZER_ON;
	}
	else
	{
		BUZZER_OFF;
	 }
		ms_count = 0;
	}

	T1IR = 0x01;
	VICVectAddr = 0x00; 
}

int main (void) 
{
  T1TCR = 0x00;		/* ensure timer 1 is off */
/* set timer counter and prescale counter */

T1TC = 0x0;
T1PC = 0x0;

/* set prescale and match values to give 1 ms "tick" */

T1PR = 0x0;
T1MR0 = TIMER_TICK_1_MS;

/* set control to interrupt on MR0 match, 
and reset to 0 (i.e. "tick") */

T1MCR = 0x3;

/* vector TIMER 1 as mid-level priority and enabled */

VICVectCntl11 = 0x25;

/* vector TIMER 1 interrupt address */

VICVectAddr11 = (unsigned int) Timer_ISR;

/* enable TIMER 1 in VIC */

VICIntEnable = 0x0020;

/* go start timer 1... */

T1TCR = 0x1;

  while (1)  
  {
  }
}
